package cn.declare.service;

import cn.declare.bean.Appealreporting;
import cn.declare.bean.Appealtype;
import cn.declare.bean.Complete;
import cn.declare.dto.AppealreportingDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;
/**
 * Author
 * 潘红阳
 */
public interface AppealreportingService {
    /**
     * @param completestatus
     *  @param userid
     * @param currpage
     * @param pagesize
     * @param tradeId
     * @return 根据审核状态和用户id查询结果
     * 企业端主要使用userid  completestatus=1
     * 管理员对应行业tradeId  completestatus=2
     * 政府端只需要completestatus处理状态   completestatus=3
     */
    public List<AppealreportingDto> selectappealAllbyStatus(int completestatus,int rejectid, int userid, int tradeId, int currpage, int pagesize);

    /**
     * @param appealreportingid
     * @return 根据诉求id查询对因的数据
     * 企业端
     */
    public AppealreportingDto selectappealByid(int appealreportingid);


    /**
     * @param userid
     * @return 通过用户id查询草稿箱
     * 企业端
     */
    public AppealreportingDto selectapplebysavestatus(int userid);

    /**
     * @return 通过用户id修改草稿箱
     * 需要先判断之前是否存过草稿，如果没有，调用添加方法savestatus=1
     * 企业端
     */
    public int applebysavestatusUpdate(Appealreporting appealreporting);

    /**
     * @return 查询所有诉求类型
     *
     */
    public List<Appealtype> selectAllappealtype();

    /**
     * @param completestatus
     * @return 根据用户状态查询总条数
     */
    public int pagecount(int completestatus,int userid,int tradeId);

    /**
     * @param appealreporting
     * @return 诉求添加
     * 企业端
     */
    public int appealAdd(Appealreporting appealreporting);

    public int appealrejectid(int rejectid, String rejectcontent, int appealreportingid);

    /**
     * @param appealreporting
     * @return 诉求修改
     * 修改之前需要先查询诉求状态是否是待审核状态
     */
    public int appealUpdate(Appealreporting appealreporting);

    /**
     * @param appealreportingid
     * @return 诉求状态修改
     * 诉求被驳回时修改状态为1
     * 诉求被通过时修改状态为2
     * 诉求完结时修改状态为3
     */
    public int appealUpdatebyid(int completestatus,int appealreportingid);


    /**
     * @param complete
     * @return 添加诉求回复
     * 企业端，管理端
     */
    public int completeAdd(Complete complete);

    /**
     * @param appealreportingid
     * @return 根据诉求id查询所有诉求内容
     */
    public List<Complete> selectCompleteAllbyid(int appealreportingid);
}
